このページはECMAScript® 2020 Language Specification16 Error Handling and Language Extensions章をJavaScriptの学習目的で私的に日本語訳したものであり、直訳と意訳および推測が混在しています。そのため内容については正確ではない可能性があります。正確な情報を知りたい場合は、原文をご覧ください。また一部訳者によるコメントが含まれていることがあります。※このサイトの内容で損害や不利益を受けたとしても当方は一切の責任を負いません。

早期エラー

実装は、関連するECMAScript言語構造の評価時に、エラーを報告する必要があります。 早期エラーは、エラーを含むScript内の構成の評価前に検出および報告されるエラーです。 早期エラーは、構成の評価を中止します。 実装は、ParseScriptScriptを解析する一環として、Scriptの早期エラーを報告する必要があります。 Moduleの早期エラーは、 Moduleが評価され、 Moduleが初期化されない時点で報告されます。 evalコードの早期エラーは、evalが呼び出されたときに報告され、evalコードの評価を中止します。 早期エラーではないすべてのエラーは実行時エラーです。

実装は、この仕様の項目名に「静的セマンティクス:初期エラー」が含まれている項目で挙げられている状態が発生したとき、早期エラーとして報告する必要があります。

コンパイラが構成前に、初期エラー以外のエラーで中断を余儀なくされたとしても、実装は他の種類のエラーを初期エラーとして扱わないものとします。 このような場合、実装は早期警告を発行する可能性がありますが、関連する構成が実際に実行されるまでエラーを報告しないでください。

実装は、以下を除いて、指定されたとおりにすべてのエラーを報告するものとします。

  • 16.1で制限されている場合を除き、実装では、Script構文、Module構文、および正規表現パターンまたはフラグ構文を拡張できます。 これを許可するために、SyntaxErrorのスローが許可されているすべての操作(evalの呼び出し、正規表現リテラルの使用、FunctionまたはRegExpコンストラクターの使用など)は、実装に遭遇したときにSyntaxErrorをスローする代わりに、スクリプト構文または正規表現パターンまたはフラグ構文の拡張を実装定義した動作を示すことができます。
  • 16.1で制限されている場合を除き、実装は、この仕様で説明されているもの以外に、追加の型、値、オブジェクト、プロパティ、および関数を提供する場合があります。 これにより、コンストラクト(グローバルスコープで変数を検索するなど)が、エラー(ReferenceErrorなど)をスローする代わりに、実装で定義された動作をする可能性があります。

16.1 禁止されている拡張機能(Forbidden Extensions)

実装は、次の方法でこの仕様を拡張してはいけません。